One of the difficulties in managing or administrating a data processing or computing system is properly and automatically allocating resources (such as data storage and computational processes) so that users receive access to sufficient resources to perform their tasks, but do so in a way that does not unreasonably degrade the resources available to others. An aspect of this problem that is relevant to the operation of a multi-tenant system is that of properly controlling the use of the database, which is a resource that is shared as part of the system. Unfortunately, a shared database may become used by a subset of users in a way that degrades the system performance experienced by others of the users. This is an example of “the tragedy of the commons” doctrine, in which some users will take as much of the available resources from a service as they can, because it's there and they are unaware of (or do not care about) the impact on other users. Even if not initiated by a user directly or intentionally, an integration with or interface between a user's systems and a shared resource may behave improperly and result in rapidly making requests to the shared resource, thereby potentially impacting other users.
Conventional approaches to managing a shared resource typically rely on operating in a default mode in which it is understood that a server may at least temporarily run out of resources when a relatively large number of resource requests arrive (or a relatively high rate of requests occurs). This may be acceptable (at least in principle) because the server makes a best effort to service the requests, but the situation is not practical because it can happen relatively suddenly, with a resulting sustained service degradation until the load recedes. Another conventional approach is one based on prioritization of requests for resource access (either as determined by a static or a dynamic process); however, a problem with this type of approach is that it typically starves lower priority clients and they do not receive the resource access they require for effective operation. A further conventional approach is one based on static allocation of a resource's capacity to different accounts, types of transactions, etc. As with other approaches, this fails to satisfy the needs of a dynamic operating environment and may result in allocating access to a resource in an inefficient or sub-optimal manner.
Embodiments of the invention are directed toward overcoming the disadvantages and limitations of conventional shared resource management methods and solving these and other problems individually and collectively. Specifically, in some embodiments, the invention is directed to systems, elements, and methods that may be implemented in a multi-tenant system in order to prevent a single user from degrading the performance of the system for other users by misuse of a shared database, and to prevent an overload condition from causing the system or database to fail abruptly.